[Tips] JavaScriptでCSVを読み込んでJSONを作る
JavaScriptでCSVファイルを読み込んでJSONを作る簡単なサンプルを示します。
const csvFilePath = '[CSVファイルのパス]' const jsonFilePath = '[JSONファイルのパス]' const csv = require('csvtojson') const moment = require('moment') const fs = require('fs') csv() .fromFile(csvFilePath) .then((rows)=>{ rows = rows.map((row) => { row.id = new Number(row.id) row.success = new Boolean(row.success) row.registrationDate = moment(row.registrationDate).format("YYYY-MM-DD") return row }) fs.writeFile(jsonFilePath, JSON.stringify(rows, null, 2), (err) => { if (err) { throw err; } console.log("JSON generated."); }) })
csvtojsonを使うのが簡単です。
CSVファイルに次の内容を用意すると、
id,success,registrationDate 1,true,2022/01/03 2,false,2022/08/30 3,true,2022/12/13
次のJSONファイルが生成されます。
[ { "id": 1, "success": true, "registrationDate": "2022-01-03" }, { "id": 2, "success": true, "registrationDate": "2022-08-30" }, { "id": 3, "success": true, "registrationDate": "2022-12-13" } ]
map処理の中で、各行のデータ(row)に対して、id
は数値として扱い、success
は論理値として扱い、registrationDate
は日付のフォーマット変換を行うためにnew Number()
、new Boolean()
、moment().format("YYYY-MM-DD")
にそれぞれ通しています。これらを通さないと、idやsuccessはそれぞれ文字列としてJSONに出力されます。文字列として出力というのは、次のように"(ダブルクォート)で囲まれた値で出力されることを指します。
[ { "id": "1", "success": "true", "registrationDate": "2022-01-03" }, { "id": "2", "success": "true", "registrationDate": "2022-08-30" }, { "id": "3", "success": "true", "registrationDate": "2022-12-13" } ]